﻿/*
 * Authors:
 *   钟峰(Popeye Zhong) <9555843@qq.com>
 *
 * Copyright (c) 2017 Flagwind Game Studio. All rights reserved.
 */

using System;

namespace Flagwind.Gaming
{
	/// <summary>
	/// 表示游戏得分评估器的接口。
	/// </summary>
	public interface IGameEvaluator
	{
		/// <summary>
		/// 计算卡牌的<see cref="Poker.Rank"/>点数。
		/// </summary>
		/// <param name="value">指定的卡牌值，取值范围根据游戏类型而不同。譬如扑克游戏的取值最大值53或51。</param>
		/// <returns>返回卡牌对应的<see cref="Poker.Rank"/>点数。</returns>
		byte GetRank(byte value);

		/// <summary>
		/// 计算多张卡牌的组合分数。
		/// </summary>
		/// <param name="values">指定的卡牌值集，卡牌集数量根据不同游戏类型而不同。譬如扑克游戏的卡牌集数量最多不能超过54。</param>
		/// <returns>返回多张卡牌的组合得分数。</returns>
		int Evaluate(ArraySegment<byte> values);
	}
}
